<html>
  <head>
	  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>i5ting_ztree_toc:01-css发展史</title>
		<link href="toc/style/github-bf51422f4bb36427d391e4b75a1daa083c2d840e.css" media="all" rel="stylesheet" type="text/css"/>
		<link href="toc/style/github2-d731afd4f624c99a4b19ad69f3083cd6d02b81d5.css" media="all" rel="stylesheet" type="text/css"/>
		<link href="toc/css/zTreeStyle/zTreeStyle.css" media="all" rel="stylesheet" type="text/css"/>
	  <style>
		pre {
		    counter-reset: line-numbering;
		    border: solid 1px #d9d9d9;
		    border-radius: 0;
		    background: #fff;
		    padding: 0;
		    line-height: 23px;
		    margin-bottom: 30px;
		    white-space: pre;
		    overflow-x: auto;
		    word-break: inherit;
		    word-wrap: inherit;
		}

		pre a::before {
		  content: counter(line-numbering);
		  counter-increment: line-numbering;
		  padding-right: 1em; /* space after numbers */
		  width: 25px;
		  text-align: right;
		  opacity: 0.7;
		  display: inline-block;
		  color: #aaa;
		  background: #eee;
		  margin-right: 16px;
		  padding: 2px 10px;
		  font-size: 13px;
		  -webkit-touch-callout: none;
		  -webkit-user-select: none;
		  -khtml-user-select: none;
		  -moz-user-select: none;
		  -ms-user-select: none;
		  user-select: none;
		}

		pre a:first-of-type::before {
		  padding-top: 10px;
		}

		pre a:last-of-type::before {
		  padding-bottom: 10px;
		}

		pre a:only-of-type::before {
		  padding: 10px;
		}

		.highlight { background-color: #ffffcc } /* RIGHT */
		</style>
  </head>
  <body>
	  <div>
				<div style='width:25%;'>
						<ul id="tree" class="ztree" style='width:100%'>

						</ul>
				</div>
        <div id='readme' style='width:70%;margin-left:20%;'>
          	<article class='markdown-body'>
            	<h1 id="css-">CSS简史</h1>
<p>为什么我们需要回顾一下CSS简史呢？</p>
<p>1.了解过去能够更好地预测未来，毕竟太阳底下没有什么新鲜事。</p>
<p>2.相比预测未来，通过了解CSS发展演变趋势，能够科学合理地评判CSS的发展，指导我们学习CSS的核心技术，让我们在有限的精力和时间内学对知识，学好知识。</p>
<p>那是1989年的第一场雪，比1988年来的更早一些，伯纳斯·李（Tim Berners-Lee）以超人的智慧和消耗了前额无数浓密的头发为代价发明了World Wide Web，没有他就没有我们今天互联网相关的工作，也就没有了这个专栏教程，请允许我代表广大前端致以崇高的敬意。我们先一睹大神的风采。
<img src="https://img2020.cnblogs.com/blog/2007331/202004/2007331-20200415101125451-576755080.jpg" alt="img">
对互联网之父，我只想对他说一句话，有一款洗发水增发效果挺好的，我一直用，你要不要试试？</p>
<p>互联网诞生了以后，最初的网页仅仅是纯文本，但是随着互联网的发展，大家意识到web的原始版本根本就没有提供一种装饰网页的方法。这就好比一个婴儿不会穿着衣服出生一样，孩子大了，总不能裸奔吧？这个时候两个大神提供了解决方案Pei Yaun Wei和Andreesen。</p>
<p>Pei Yaun Wei说，这个好办，我们可以给孩子穿上纸尿裤。</p>
<p>  Pei-Yuan Wei在1991年创建图形浏览器 ViolaWWW ，他整合了自己提出的样式语言到自己开发的浏览器中，还期望自己的样式语法最终能成为web关于样式的官方标准。虽然这个目标并未达到，但是他提出的样式语法确实为其它的一些样式语法提供了一些灵感。</p>
<p>Andreesen说，那玩意得换多麻烦，我给孩子画一身衣服吧，当然你懂的，最后Pei Yaun Wei的方案被采用了，但是我们还是看看Andreessen画出来的情况有多乱。</p>
<p>  与此同时，Andreessen 在他开发的网景浏览器中进行了不同的尝试。他并没有创建一种分离式的标记语言，而是采取拓展HTML标签的方法来包含非标准化的HTML标签已达到装饰网页的目的。不幸的是，没过多久，网页就失去了所有的语义化并看起来像下面这样混乱：</p>
<MULTICOL COLS="3" GUTTER="25">
 <P><FONT SIZE="4" COLOR="RED">This would be some font broken up into columns</FONT></P>
</MULTICOL>

<p>最终被大家采纳的语言是由Hakon Wium 在 1994年 10月提出的样式语法。它被称为样式层叠表，简称CSS，但是直到1996年的时候，CSS才演变成我们熟悉的样子。</p>
<p>html {
 margin-left: 2cm;
 font-family: &quot;Times&quot;, serif;
}
h1 {
 font-size: 24px;
}</p>
<p>然后在1998年5月W3C发表了CSS2，紧接着一个让我们深恶痛觉的浏览器诞生了！对没错，就是你深恶痛绝的那个万能的IE6，2001年微软发布了IE6，不过搞笑的是，IE6最初的出现确实很大程度推动了CSS发展。那时候的网页已经变成跟现在很接近了。
<img src="https://img2020.cnblogs.com/blog/2007331/202004/2007331-20200415101159765-893426914.jpg" alt="img">
按照常理你肯定会想，后面我就知道了，你不用说了，然后就是CSS3.0了。好吧，如果是我，我也这样想，但是国际友人的脑回路可能跟我们不一样，事实上，CSS3早于1999年已经开始制订，直到2011年6月7日，CSS 3 Color Module终于发布为W3C Recommendation。这个故事告诉我们两件事：</p>
<p>1.w3c这个组织活的真够长，甚至比很多读者年龄都大。</p>
<p>2.不是CSS正式版发布了你才放心使用，如果等到那个时候使用，你的项目可能未曾绽放就枯萎了。</p>
<p>细心的读者可能会问了，CSS3正式版什么时候发布啊？另外CSS4.0什么时候发布？</p>
<p>好吧，我只能告诉你随缘吧……而且没有CSS4.0了，也不会有CSS5.0了。</p>
<p>来我们再看看国际友人的脑回路：</p>
<p>  简单地说，就是从CSS3开始，CSS规范就被拆成众多模块（module）单独进行升级，或者将新需求作为一个新模块来立项并进行标准化。因此今后不会再有CSS4、CSS5这种所谓大版本号的变更，有的只是CSS某个模块级别的跃迁。</p>
<p>按照CSS工作组的说法，CSS历史上并没有版本的概念，有的只是“级别”（level）的概念。比如，CSS3其实是CSS Level 3，CSS2是CSS Level 2，而CSS Level 1当然就是CSS1。每个级别都以上一个级别为基础。</p>
<p>大家可能说这个命名好乱啊，这事儿我只想跟你说，你就把CSS工作组当成你女朋友就好了，她开心就好，她说的都是对的，她说啥就是啥……</p>
<p>至于我们，会用就好了。</p>
<p>CSS出现的好处就是让结构和表现分离，可以更灵活的修饰网页,学习也很简单。这里我更想说说它的不足。</p>
<p>1.CSS只有一个全局的命名空间，所以是无法避免出现选择器冲突的。</p>
<p>2.模块化做的不够好，所以造成嵌套和覆盖混乱，容易产生一大堆乱糟糟的样式。</p>
<p>所以现在CSS也在向“模块化、JS化发展”</p>
<p>不过客观地说，CSS的出现确实是互联网里程碑式的进步。</p>
<p>CSS其实就做了两件事：</p>
<p>1.如何布局</p>
<p>2.元素怎么表现</p>
<p>说直白一点就是两件事，一个房子是盖成两室一厅还是三室两厅，另一件事是精装修。</p>
<p>这里大家就会看到如果一个房子180平米隔成1个10平米的主卧170平米的厕所，你再怎么精装修也不会是一个宜居的房间。所以布局在CSS中是极其重要的。与CSS发展简史类似，CSS布局也经历了一代又一代的迭代，才成为当前的样子。</p>
<p>接下来我们就说说CSS布局简史。</p>
<p>2.CSS布局简史</p>
<p>初代table布局</p>
<p>在1997年的时候，David Siegel 改变了web，他自己研究出了一项网页布局技术，利用html中的table元素和gif图片缝合在一起，创造了表格布局技术，之后他就犹如一头猛兽泛滥起来。</p>
<p>优点：布局容易、快捷、兼容性好</p>
<p>缺点：改动不便，需要重新调整，工作量大</p>
<p>由于互联网网站越来越复杂，内容和业务更新频繁，所以table布局是完全不能胜任的，以至于table布局的发明人都说：</p>
<p>  “我把炸酱和面倒在了一起，并且没法分开它。”</p>
<p>不过这个真不是我杜撰出来的，原文：</p>
<p>  David Siegel：“有人说我毁掉了Web，我回答他们，的确如此。我毁掉了Web是因为我把巧克力和花生酱混合在一起却再也不能把它们分开。我犯下了把结构跟表现混合在一起的错误。”</p>
<p>然后第二代布局技术登场了，</p>
<p>CSS+div布局</p>
<p>CSS+div布局总结起来有三大优点，</p>
<p>1.省时，学习容易，写代码也很容易，很快，效率高</p>
<p>2.省事，如果业务逻辑变了，改起来特别方便快捷</p>
<p>3.省钱，代码量少，省带宽，适合seo</p>
<p>基于这三年不难看出CSS+div布局人畜无害，人见人爱，也就不难解释为什么被广泛地使用成为目前主流的布局技术了。当然了他也有缺点：</p>
<p>1.需要考虑平台兼容性，对制作人员的技能要求较高。</p>
<p>2.在移动端布局显得有些力不从心，如未知宽高float内部元素居中、垂直水平布局、响应式布局等方面略显繁琐。</p>
<p>基于此，第三代布局技术应运而生。</p>
<p>Flex布局
<img src="https://img2020.cnblogs.com/blog/2007331/202004/2007331-20200415101301154-1201746728.jpg" alt="img">
优点：</p>
<p>  1.CSS3的布局方式，可以在不使用其他框架的情况下，简便、完整、响应式地实现各种页面布局</p>
<p>  2.移动端布局简直太友好</p>
<p>缺点：</p>
<p>  兼容性较差，IE浏览器版本在9.0以上，基本要10.0</p>
<p>  对于其他浏览器，要求兼容性写法</p>
<p>Flex布局日渐成为移动端主流布局技术，但是它是单一维度的布局，这个我会在专栏后面讲到，有时候也会捉襟见肘，所以目前出现了第四代的布局技术：</p>
<p>grid布局
<img src="https://img2020.cnblogs.com/blog/2007331/202004/2007331-20200415101545414-1327788096.jpg" alt="img">
因为目前大部分浏览器并不支持这种技术，但是它代表了网络发展，这里大家保持关注就好，这里我重点说下它为什么可以称为第四代网络布局技术。首先一个观点大家先记住：</p>
<p>它并不会取代第三代的布局技术，而是颠覆和突破。就好像Flex远比div+CSS布局更方便，但是div+CSS依然有用武之地。</p>
<p>我们说下它的突破之处：</p>
<p>1.flex对标的是float，本质上还是一维布局，这就跟别人开着夏利，你开奔驰都是地面上跑没啥本质区别一样。但是grid升维了，grid是飞机，在地面马路这条线一维之上让人能够思考高度这个维度，以前是汽车一维交通工具（你只能在水平方向一个方向开），飞机是二维（能俯冲了（横向、纵向同时）），所以grid可以说是拓宽了CSS布局的维度。不排除将来会有三维布局的出现。到时候CSS不仅仅能控制横向布局，纵向布局，还可以深度布局（这个要依赖于三维展示的出现，如VR，AR三维立体的展示设备出现）。</p>
<p>2.grid布局里面采用了“可视化布局（template部分，所见即所得）”，这个是颠覆了传统的，写一句代码刷一下浏览器这样的开发方式，不排除以后会出现代码即效果的开发模式。比如你在一个设备上画一个区域，然后画轮播图。</p>
<p>这种方式类似于vc++控件方式，但是更智能，也更友好。谁说不可能呢？大家不要忘了grid布局的来源是早就废弃的table布局。说到这里我多说一句搞笑的微软，frontpage没火，dreamwaver火了，最早提出“canvas”概念的 VML没火，最后html5的canvas火了，连CSS3网格布局也是由微软创建的一个模块 ，最后火起来居然没人认识它。心疼微软一秒钟。</p>
<p>说到这里大家对CSS简史和布局也有所了解了，我们总结下，通过本文你应该学到：</p>
<p>（1）CSS的发展历史。</p>
<p>（2）熟知布局的发展历史，以便对未来布局技术的发展有一个客观的判断，来选择是否学习。</p>
<p>通过本文的学习大家已经对CSS相关基础知识有所了解，接下来我们就开始真正的进入技术的学习，大家是不是迫不及待了呢？</p>

          	</article>
        </div>
		</div>
  </body>
</html>
<script type="text/javascript" src="toc/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="toc/js/jquery.ztree.all-3.5.min.js"></script>
<script type="text/javascript" src="toc/js/ztree_toc.js"></script>
<script type="text/javascript" src="toc_conf.js"></script>

<SCRIPT type="text/javascript" >
<!--
$(document).ready(function(){
    var css_conf = eval(markdown_panel_style);
    $('#readme').css(css_conf)
    
    var conf = eval(jquery_ztree_toc_opts);
		$('#tree').ztree_toc(conf);
});
//-->
</SCRIPT>